package com.xmy.cultivate.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xmy.cultivate.entity.AuthAdminContent;
import com.xmy.cultivate.entity.response.ArrivalRate;
import com.xmy.cultivate.entity.response.PassRade;
import com.xmy.cultivate.entity.response.PassRadeDetail;
import com.xmy.cultivate.entity.views.LeadDataRs;
import com.xmy.cultivate.entity.views.StudyPlan;
import com.xmy.cultivate.respons.EduTask;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface IStudyPlanService {

    public abstract List<StudyPlan> getPlanList(String schoolId, String yearPart, String yearClassId, Integer type, String classTypeId, String subjectsId, String quarterNum, String startDate, String endDate, String trackId, String gradeSection, String lessonType);

    public abstract IPage<StudyPlan> getPlanDetail(String schoolId, String teacherId, String gradeId, String yearPart, String yearClassId, Integer type, String classTypeId, String subjectsId, String quarterNum, String startDate, String endDate, String trackId, String gradeSection, String lessonType, Integer pageNum, Integer pageSize);

    public abstract List<StudyPlan> getMinimumTaskProgressRate(String schoolId, String yearPart, String yearClassId, Integer type, String classTypeId, String subjectsId, String quarterNum, String startDate, String endDate, String trackId, String gradeSection, Integer passersStatus, Integer taskCourseNum, Integer taskCourseNumNow, Integer taskState, String courseTypeId, String taskDateStart, String taskDateEnd);

    public abstract IPage<StudyPlan> getMinimumTaskProgressRateDetail(String schoolId, String teacherId, String gradeId, String yearPart, String yearClassId, Integer type, String classTypeId, String subjectsId, String quarterNum, String startDate, String endDate, String trackId, String gradeSection, Integer pageNum, Integer pageSize, Integer passersStatus, Integer taskCourseNum, Integer taskCourseNumNow, Integer taskState, Integer offState, String courseTypeId, String taskDateStart, String taskDateEnd, String studentIdString);

    public List<StudyPlan> getGoUpList(String schoolId, String yearPart, String yearClassId, Integer type, String classTypeId, String subjectsId, String quarterNum, String startDate, String endDate, String trackId, String gradeSection);

    public List<StudyPlan> getGoUpDetail(String schoolId, String teacherId, String gradeId, String yearPart, String yearClassId, Integer type, String classTypeId, String subjectsId, String quarterNum, String startDate, String endDate, String trackId, String gradeSection, String isGoUp, Integer pageNum, Integer pageSize);

    public List<ArrivalRate> getSuspensionRate(Map<String, String> reMap, List<Long> baseSchoolIdList);

    public List<ArrivalRate> getSuspensionRateDetail(Map<String, String> reMap);

    public ArrayList<Object> getTaskNumber(EduTask eduTask);

    public ArrayList<Object> getTaskDate(EduTask eduTask);

    public Map<String, Object> getTaskNew(String yearPart, String quarterNum, String yearClassId, String classTypeId, String courseVersionId);

    public void synchronousStudentIdForClassType();

    public abstract List<StudyPlan> getClearanceRateChaPlan(Map<String, Object> reMap);

    public abstract IPage<StudyPlan> getClearanceRateChaPlanDetail(Map<String, Object> reMap);

    List<PassRade> getMinimumTaskProgressRateNew(Integer readingStatus, String schoolId, String yearPart, String yearClassId, Integer type, String classTypeId, String quarterNum, String gradeSection, Integer taskCourseNum, Integer taskCourseNumNow, String courseTypeId, String taskDateStart, String taskDateEnd, Integer tabsType, String include, String teamId, String classify, String trackType, String categoryId, String teacherId, String tactType, String listState, String teacherName, String shutnumType, String studentName, Integer isHoliday, String moldType, Integer isYearClass, AuthAdminContent authAdminContent, LeadDataRs leadDataRs);

    public List<PassRade> getTeacherRate(String yearPart, String yearClassId, String classTypeId, String quarterNum, String gradeSection, Integer taskCourseNum, Integer taskCourseNumNow, String taskDateStart, String taskDateEnd, String tactType, String listState, String shutnumType, String teamId, String classify, String trackType, Integer type);

    public Page<PassRadeDetail> getTeacherRateDetail(Integer pageNum, Integer pageSize, String yearPart, String yearClassId, String classTypeId, String quarterNum, String gradeSection, Integer taskCourseNum, Integer taskCourseNumNow, String taskDateStart, String taskDateEnd, String tactType, String listState, String detailType, String teacherId, String teamId, String classify, String trackType, Integer type);

    public abstract List<PassRadeDetail> getMinimumTaskProgressRateDetailNew(Integer readingStatus, String schoolId, String teacherId, String gradeId, String yearPart, String yearClassId, Integer type, String classTypeId, String subjectsId, String quarterNum, String gradeSection, Integer pageNum, Integer pageSize, Integer taskCourseNum, Integer taskCourseNumNow, String courseTypeId, String taskDateStart, String taskDateEnd, String detailType, Integer tabsType, String include, String teamId, String classify, String trackType, String studentIdStr, String categoryId, String tactType, String studentName, String listState, String shutnumType, Integer isHoliday, String moldType, Integer isTeam, AuthAdminContent authAdminContent, LeadDataRs leadDataRs);

    public List<ArrivalRate> getReturnPremiumRate(Map<String, String> reMap, List<Long> baseSchoolIdList);

    public List<ArrivalRate> getReturnPremiumRateDetail(Map<String, String> reMap);

    /**
     * 键盘熟练度列表
     */
    public List<PassRade> keyboardPracticeList(Integer yearPart, Integer quarterNum, String taskDateStart, String taskDateEnd, String yearClassId, String gradeSection, String schoolId, String classTypeId, Integer type, String classify, String trackType, String teamId);

    /**
     * 键盘熟练度详情
     */
    public List<PassRadeDetail> keyboardPracticeDetails(Integer yearPart, Integer quarterNum, String taskDateStart, String taskDateEnd, String yearClassId, String gradeSection, String schoolId, String classTypeId, String teacherId, Integer type, String gradeId, String detailType, String studentIdList, String classify, String trackType, String teamId);


}
